home *** CD-ROM | disk | FTP | other *** search
Prolog Source | 1986-10-07 | 562 b | 30 lines |
- /*Program Qsort */
- /*
- Enter the goal: qsort([4,8,2,7],ANS).
- */
- domains
- l = integer*
-
- predicates
- split(integer,l,l,l)
- append(l,l,l)
- qsort(l,l)
-
- clauses
- append([],X,X).
- append([H|L],L1,[H|L2]) :-
- append(L,L1,L2).
-
- split(_,[],[],[]).
- split(H,[A|X],[A|Y],Z) :-
- A <= H,!, split(H,X,Y,Z).
- split(H,[A|X],Y,[A|Z]) :-
- A > H,!, split(H,X,Y,Z).
-
- qsort([],[]).
- qsort([H|T],S) :-
- split(H,T,A,B),
- qsort(A,A1),
- qsort(B,B1),
- append(A1,[H|B1],S).
-